Patrones de creación: Abstract factory, Builder y Factory Method

Introducción

Los patrones de creación son patrones que abstraen el proceso de instanciación, separando el sistema de cómo sus objetos son creados, encapsulando asé conocimientos sobre clases concretas usadas por el sistema.

Tienen como objetivo encapsular la creación de objetos.

Se utilizan para desvincular al sistema de la forma en que sus objetos son creados.

 

Abstract factory (Fábrica abstracta)

Permite crear familias de objetos relacionados sin especificar sus clases concretas.

Ejemplos:

  1. “Temas” de interfaces gráficos, donde todos los elementos cambian a la vez (oscuro, claro, alto contraste...).

  2. Gestión de bases de datos distintas donde la funcionalidad (conectar, acceder, cerrar) no bebería depender del tipo concreto.

 

Debemos utilizar este patrón cuando:

 

Ventajas e inconvenientes del patrón Abstract Factory:

 

Estructura

 

AbstractFactory

 

Implementación

 

AbstractFactoryBD

 

PASO 1: CREACIÓN DE LA FACTORIA ABSTRACTA

 

PASO 2: CREACIÓN DE LOS OBJETOS ABSTRACTOS

 

PASO 3: CREACIÓN DE LOS OBJETOS CONCRETOS

3.1 Objetos concretos Conexion

 

3.2 Objetos concretos Consulta

 

PASO 4: CREACIÓN DE LAS FACTORIAS CONCRETAS

 

PASO 5: CODIFICACIÓN DE UNA APLICACIÓN CLIENTE

 

Builder (Constructor)

Builder es un patrón de diseño creacional que nos permite construir objetos complejos paso a paso.

Permite crear distintas representaciones usando el mismo método de construcción.

Este patrón lo podemos visualizar como una cadena de montaje destinada a la construcción de un objeto. En cada paso de la cadena se construye una parte del objeto.

Ejemplos:

  1. Aplicación para generar archivos con distintos formatos.

  2. Aplicación para construir ordenadores.

 

Se pueden tener ciertas variaciones del patrón, por ejemplo:

 

Ventajas e inconvenientes del patrón Builder:

 

Estructura

 

Builder

 

Funcionamiento

  1. El cliente crea un objeto director asociándole un constructor concreto.

  2. El cliente solicita al director la construcción del producto.

  3. El director construye el producto invocando a los métodos del constructor.

  4. El constructor ejecuta sus métodos a medida que son invocados (generando el producto de manera incremental).

  5. El cliente obtiene el producto del constructor.

 

Implementación

 

BuilderDOCUMENTOS

 

PASO 1: CREACIÓN DEL CONSTRUCTOR ABSTRACTO

 

PASO 2: CREACIÓN DEL DOCUMENTO (NECEARIO SOLO SI EN LA MISMA JERARQUIA)

 

PASO 3: CREACIÓN DE CONSTRUCTORES CONCRETOS

3.1 Constructor concreto ConstructorDocumentoHTML

 

3.2 Constructor concreto ConstructorDocumentoJSON

 

PASO 4: CREACIÓN DE LA CLASE DIRECTOR

 

PASO 5: CREACION DE LA CLASE CLIENTE

 

Factory Method (Método fábrica)

Factory Method es un patrón de diseño creacional que proporciona una interface para crear objetos en una clase abstracta (superclase), mientras permite a las subclases alterar el tipo de objetos que se crearán.

Aplicabilidad:

Ejemplos:

  1. Una empresa de logística tras el éxito de su reparto con camiones decide ampliar a reparto por barco y urbano en bici.

    Hasta ahora el modelo de negocio era, cada vez que se solicitaba un servicio:

    • Crear una tarea de transporte por camión.

    • Establecer una ruta con un número prefijado de puntos intermedios para ser realizado cada uno de ellos por un camión.

    • Iniciar la ruta informando de que puede realizarse seguimiento en la web.

    Mediante un creador de transportes abstracto, el método de factoría desacoplará la lógica de negocio de la creación de los transportes.

 

Ventajas e inconvenientes del patrón Factory Method:

 

Factory Method vs Abstract Factory

 

Estructura

FactoryMethodICA

 

Implementación

 

FactoryMethodLOGISTICA

 

PASO 1: CREACIÓN DE LA FACTORIA ABSTRACTA

 

PASO 2: CREACIÓN DEL OBJETO ABSTRACTO

 

PASO 3: CREACIÓN DE LOS OBJETOS CONCRETOS

3.1 Objetos concretos Conexion

 

PASO 4: CREACIÓN DE LAS FACTORIAS CONCRETAS

 

PASO 5: CODIFICACIÓN DE UNA APLICACIÓN CLIENTE

 

by Jose Manuel Pinillos